﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;


using System.Data;
using System.Reflection;
using MySql.Data.MySqlClient;
using QLInternet.Connection;
using QLInternet.Model;
using System.Collections.ObjectModel;
using QLInternet.ViewModel;
using QLInternet.Source;
using System.Text.RegularExpressions;
using System.Threading;
using System.ComponentModel;

namespace QLInternet
{
    public partial class MainWindow : Window
    {
        public Query qr;
        public Connect conn;
        public DangKy dk;
        ObservableCollection<CustomerViewModel> customer;
        CustomerViewModel model;
        public int maQuyen = 0;
        public String chucVu = "";
        public String users;
        public String passWord;
        public MainWindow()
        {
            this.InitializeComponent();
            customer = new ObservableCollection<CustomerViewModel>();
            model = new CustomerViewModel();
            cbbMaPT.DataContext = new PhuongThucViewModel();
            cbbLoaiModem.DataContext = new ModemViewModel();
            cbbKieuLapDat.DataContext = new SettingTypeViewModel();
            
        }


        private void NumericTextbox(object sender, KeyEventArgs e)
        {
            if ((int)e.Key > 43 || (int)e.Key < 34)//ky tu # so
            {
                if ((int)e.Key != 2)
                    e.Handled = true;
                else
                    e.Handled = false;

            }
            else
                e.Handled = false;
        }


        private void btnExit_Click(object sender, RoutedEventArgs e)
        {

            this.Close();

        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {

            if (maQuyen == 1)
            {
                tabControl.Items.RemoveAt(3);
                tabControl.Items.RemoveAt(3);
                tabControl.Items.RemoveAt(3);
                ImageBrush myBrush = new ImageBrush();
                myBrush.ImageSource = new BitmapImage(new Uri(@"staff-icon.png", UriKind.Relative));
                lbImages.Background = myBrush;
            }
            else
                if (maQuyen == 2)
                {
                    tabControl.Items.RemoveAt(0);
                    tabControl.Items.RemoveAt(0);
                    tabControl.Items.RemoveAt(0);
                    tabControl.Items.RemoveAt(0);
                    tabControl.Items.RemoveAt(0);
                    ImageBrush myBrush = new ImageBrush();
                    myBrush.ImageSource = new BitmapImage(new Uri(@"tech-icon.png", UriKind.Relative));
                    lbImages.Background = myBrush;
                }
                else
                    if (maQuyen == 3)
                    {
                        tabControl.Items.RemoveAt(0);
                        tabControl.Items.RemoveAt(0);
                        tabControl.Items.RemoveAt(0);
                        tabControl.Items.RemoveAt(2);
                        ImageBrush myBrush = new ImageBrush();
                        myBrush.ImageSource = new BitmapImage(new Uri(@"Manager-icon.png", UriKind.Relative));
                        lbImages.Background = myBrush;
                    }

            txtChucVu.Text = chucVu;
            txtUsers.Text = users;
            txtPassWord.Password = passWord;
            DateTime now = DateTime.Now;
            String values = now.DayOfWeek.ToString() + ", " + now.ToString("dd/MM/yyyy");
            lblDayNow.Content = values;

        }

        private void btnDangKy_Click(object sender, RoutedEventArgs e)
        {
            groupBoxDangKy.Margin = new Thickness(25, 0, 78, 40);
            groupBoxDangKy.Height = 250;
            gridDangKy.Visibility = System.Windows.Visibility.Visible;
            btnDangKy.Visibility = System.Windows.Visibility.Hidden;
        }

        private void btnAnDangKy_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            gridDangKy.Visibility = System.Windows.Visibility.Hidden;
            groupBoxDangKy.Margin = new Thickness(25, 0, 78, 87);
            groupBoxDangKy.Height = 472;
            btnDangKy.Visibility = System.Windows.Visibility.Visible;

        }
        Boolean isNangCao = false;
        private void btnTimKiemNangCao_Click(object sender, RoutedEventArgs e)
        {
            if (isNangCao == false)
            {
                btnTimKiemNangCao.Content = "Nâng Cao";
                gridTimKiemNangCao.Visibility = System.Windows.Visibility.Visible;
                isNangCao = true;
            }
            else
            {
                btnTimKiemNangCao.Content = "Đơn Giản";
                gridTimKiemNangCao.Visibility = System.Windows.Visibility.Hidden;
                isNangCao = false;
            }

        }

        private void btnCapNhatTinhTrang_Click(object sender, RoutedEventArgs e)
        {
        }

        private void btnTimKiemDown_Click(object sender, RoutedEventArgs e)
        {
            gridTimKiem.Visibility = System.Windows.Visibility.Visible;
            groupBoxKhachHang.Margin = new Thickness(22, 260, 20, 80);
            btnTimKiemDown.Visibility = System.Windows.Visibility.Hidden;
            groupBoxThongTinKhachHang.Visibility = System.Windows.Visibility.Hidden;
        }

        private void btnnTimKiemUp_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            gridTimKiem.Visibility = System.Windows.Visibility.Hidden;

            groupBoxKhachHang.Margin = new Thickness(22, 49, 20, 300);
            btnTimKiemDown.Visibility = System.Windows.Visibility.Visible;
            groupBoxThongTinKhachHang.Visibility = System.Windows.Visibility.Visible;
        }

        private void btnThongTinChiTiet_Click(object sender, RoutedEventArgs e)
        {
            FmKhachHang fmKhachHang = new FmKhachHang();
            fmKhachHang.mahd = model.MaHopDong + "";
            fmKhachHang.makh = model.MaKh + "";
            fmKhachHang.model = model;
            fmKhachHang.conn = conn;
            fmKhachHang.Show();
        }



        private void tabBaoBieu_Clicked(object sender, MouseButtonEventArgs e)
        {
            BaoBieu bb = new BaoBieu();
            dataGridBaoBieuKHTTT.ItemsSource = bb.loadDSKHTreThanhToan(conn);
        }


        private void cbbDangKyPhuongThuc_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
        {
            if (cbbDangKyPhuongThuc.SelectedIndex < 0)
                return;

        }

        private void cbbDangKyKieuCaiDat_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
        {
            if (cbbDangKyKieuCaiDat.SelectedIndex < 0)
                return;

            int id = ((ComboboxItem)cbbDangKyKieuCaiDat.SelectedItem).Id;
            String queryMaModem = qr.sqlMaModem + id;
            String queryModem = qr.sqlModem;

            cbbDangKyModem.Items.Clear();
            dk.loadModem(conn, cbbDangKyModem, queryMaModem, queryModem);

        }
        private void cbbDangKyGoiCuoc_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
        {

            if (cbbDangKyGoiCuoc.SelectedIndex < 0)
                return;
            int id = ((ComboboxItem)cbbDangKyGoiCuoc.SelectedItem).Id;
            String query = qr.sqlGetMaPhuongThuc + id;
            int maPhuongThuc = dk.getId(conn, query);
            if (maPhuongThuc == 0)
            {
                cbbDangKyPhuongThuc.Items.Clear();
                cbbDangKyPhuongThuc.Items.Add("Trọn gói");
            }
            else
            {
                cbbDangKyPhuongThuc.Items.Clear();
                cbbDangKyPhuongThuc.Items.Add("Trọn gói");
                cbbDangKyPhuongThuc.Items.Add("Phương thức lưu lượng");
            }


        }

        private void cbbDangKyModem_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
        {
            if (cbbDangKyModem.SelectedIndex < 0)
                return;
        }



        private void btnDangKyThem_Click(object sender, System.Windows.RoutedEventArgs e)
        {

            if (txtDangKyHoTen.Text.Equals("") || txtDangKyCMND.Text.Equals("") || txtDangKyDiaChi.Text.Equals("") || txtDangKyDienThoai.Text.Equals(""))
            {
                MessageBox.Show("Vui lòng nhập đầy đủ thông tin được đánh dấu * . ", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                refresh();
                return;
            }

            if (txtDangKyCMND.Text.Length != 9)
            {
                MessageBox.Show("Chứng minh nhân dân không hợp lệ !!!","Lỗi",MessageBoxButton.OK,MessageBoxImage.Error);
                txtDangKyCMND.Text = "";
                txtDangKyCMND.Focus();
                return;
            }

            if (dk.getTinhTrangThanhToan(conn, txtDangKyCMND.Text, qr).Trim().Equals("False"))
            {

                if (dk.getTinhTrangThanhToan(conn, txtDangKyCMND.Text, qr).Trim().Equals("False"))
                {
                    MessageBox.Show("Bạn phải thanh toán mới được tiếp tục đăng kí .", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Error);
                    refresh();
                    return;
                }
            }


            int slTaiKhoan = 0;
            String maGoiCuoc = "";
            String maKieuCaiDat = "";
            String maModem = "";
            String phuongThuc = "";
            try
            {
                maGoiCuoc = ((ComboboxItem)cbbDangKyGoiCuoc.SelectedItem).Id.ToString();
            }
            catch (Exception)
            {
                maGoiCuoc = "0";
            }

            try
            {
                maKieuCaiDat = ((ComboboxItem)cbbDangKyKieuCaiDat.SelectedItem).Id.ToString();
            }
            catch (Exception)
            {
                maKieuCaiDat = "0";
            }

            try
            {
                maModem = ((ComboboxItem)cbbDangKyModem.SelectedItem).Id.ToString();
            }
            catch (Exception)
            {
                maModem = "0";
            }

            try
            {
                if (cbbDangKyPhuongThuc.SelectedItem.ToString().Trim().Equals("Trọn gói"))
                    phuongThuc = "1";
                else
                    phuongThuc = "0";
            }
            catch (Exception)
            {
                phuongThuc = "1";
            }

            try
            {
                slTaiKhoan = Convert.ToInt32(txtDangKySoLuongTaiKhoan.Text);
            }
            catch (Exception)
            {
                slTaiKhoan = 0;
            }


            model = new CustomerViewModel
            {
                HoTen = txtDangKyHoTen.Text,
                CMND = Int32.Parse(txtDangKyCMND.Text),
                NgheNghiep = txtDangKyNgheNghiep.Text,
                DiaChi = txtDangKyDiaChi.Text,
                DienThoai = Int32.Parse(txtDangKyDienThoai.Text),
                Email = txtDangKyEmail.Text,
                DiaChiCaiDat = txtDangKyDiaChiCaiDat.Text,
                DiaChiHoaDon = txtDangKyDiaChiHoaDon.Text,
                SoLuongTaiKhoan = slTaiKhoan,
                TenNguoiSuDung = txtDangKyTenNguoiSuDung.Text,
                TenGoiCuoc = maGoiCuoc,
                TronGoi = phuongThuc,
                TenKieuCaiDat = maKieuCaiDat,
                TenModem = maModem
            };


            dk.inSertCustomer(conn, model);
            MessageBox.Show("Thêm thành công ", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Information);
            customer = dk.loadDangKy(conn, qr.sql);
            dataGridDangKy.ItemsSource = customer;
            lblCountKh.Content = "Có " + dataGridDangKy.Items.Count + " khách hàng đăng ký";
            refresh();

        }

        private void btnDangKyCapNhat_Click(object sender, System.Windows.RoutedEventArgs e)
        {

            if (txtDangKyHoTen.Text.Equals("") || txtDangKyCMND.Text.Equals("") || txtDangKyDiaChi.Text.Equals("") || txtDangKyDienThoai.Text.Equals(""))
            {
                MessageBox.Show("Vui lòng nhập đầy đủ thông tin được đánh dấu * . ", "Error");
                refresh();
                return;
            }

            if (txtDangKyCMND.Text.Length != 9)
            {
                MessageBox.Show("Chứng minh nhân dân không hợp lệ !!!", "Lỗi", MessageBoxButton.OK, MessageBoxImage.Error);
                txtDangKyCMND.Text = "";
                txtDangKyCMND.Focus();
                return;
            }


            String phuongThuc = "";
            int slTaiKhoan = 0;
            String maGoiCuoc = "";
            String maKieuCaiDat = "";
            String maModem = "";

            try
            {
                maGoiCuoc = ((ComboboxItem)cbbDangKyGoiCuoc.SelectedItem).Id.ToString();
            }
            catch (Exception)
            {
                maGoiCuoc = "0";
            }

            try
            {
                maKieuCaiDat = ((ComboboxItem)cbbDangKyKieuCaiDat.SelectedItem).Id.ToString();
            }
            catch (Exception)
            {
                maKieuCaiDat = "0";
            }

            try
            {
                maModem = ((ComboboxItem)cbbDangKyModem.SelectedItem).Id.ToString();
            }
            catch (Exception)
            {
                maModem = "0";
            }

            try
            {
                if (cbbDangKyPhuongThuc.SelectedItem.ToString().Trim().Equals("Trọn gói"))
                    phuongThuc = "1";
                else
                    phuongThuc = "0";
            }
            catch (Exception)
            {
                phuongThuc = "1";
            }

            try
            {

                slTaiKhoan = Convert.ToInt32(txtDangKySoLuongTaiKhoan.Text);

            }
            catch (Exception)
            {
                slTaiKhoan = 0;
            }


            String queryHoten = qr.checkTenKh + txtDangKyHoTen.Text + "' and makhachhang = " + Int32.Parse(txtDangKyMaKhachHang.Text);
            String queryCMND = qr.checkCmnd + Int32.Parse(txtDangKyCMND.Text) + "' and makhachhang = " + Int32.Parse(txtDangKyMaKhachHang.Text);
            String queryDienThoai = qr.checkDienThoai + Int32.Parse(txtDangKyDienThoai.Text) + "' and makhachhang = " + Int32.Parse(txtDangKyMaKhachHang.Text);
            String queryDiaChi = qr.checkDiachi + txtDangKyDiaChi.Text + "' and makhachhang = " + Int32.Parse(txtDangKyMaKhachHang.Text);
            String queryEmail = qr.checkEmail + txtDangKyEmail.Text + "' and makhachhang = " + Int32.Parse(txtDangKyMaKhachHang.Text);
            String queryNgheNGhiep = qr.checkNgheNghiep + txtDangKyNgheNghiep.Text + "' and makhachhang = " + Int32.Parse(txtDangKyMaKhachHang.Text);
            String queryDiaChiCaiDat = qr.checkDccd + txtDangKyDiaChiCaiDat.Text + "' and makhachhang = " + Int32.Parse(txtDangKyMaKhachHang.Text);
            String queryDiaCHiHoaDon = qr.checkDchd + txtDangKyDiaChiHoaDon.Text + "' and makhachhang = " + Int32.Parse(txtDangKyMaKhachHang.Text);
            String querySLTaiKhoan = qr.checkSltk + slTaiKhoan + "' and makhachhang = " + Int32.Parse(txtDangKyMaKhachHang.Text);
            String queryTenNguoiSuDung = qr.checktenNguoiSuDung + txtDangKyTenNguoiSuDung.Text + "' and makhachhang = " + Int32.Parse(txtDangKyMaKhachHang.Text);
            String queryPhuongThuc = qr.checkPhuongThuc + Int32.Parse(phuongThuc) + "' and makhachhang = " + Int32.Parse(txtDangKyMaKhachHang.Text);

            String sqlmctcd = qr.sqlmctcd + Int32.Parse(maKieuCaiDat) + "' and MaModem = '" + Convert.ToInt32(maModem) + "'";
            int maCtkcd = dk.getId(conn, sqlmctcd);

            String queryMaChiTietKieuCaiDat = qr.checkMactkcd + maCtkcd + "' and makhachhang = " + Int32.Parse(txtDangKyMaKhachHang.Text);

            if (dk.isExist(conn, queryHoten) && dk.isExist(conn, queryCMND) && dk.isExist(conn, queryNgheNGhiep) && dk.isExist(conn, queryEmail) &&
                dk.isExist(conn, queryDienThoai) && dk.isExist(conn, queryDiaChi) && dk.isExist(conn, queryDiaChiCaiDat) && dk.isExist(conn, queryDiaCHiHoaDon) &&
                dk.isExist(conn, queryEmail) && dk.isExist(conn, querySLTaiKhoan) && dk.isExist(conn, queryTenNguoiSuDung) && dk.isExist(conn, queryPhuongThuc) &&
                dk.isExist(conn, queryMaChiTietKieuCaiDat))
            {
                return;
            }

            model = new CustomerViewModel
            {
                MaKh = Int32.Parse(txtDangKyMaKhachHang.Text),
                HoTen = txtDangKyHoTen.Text,
                CMND = Int32.Parse(txtDangKyCMND.Text),
                NgheNghiep = txtDangKyNgheNghiep.Text,
                DiaChi = txtDangKyDiaChi.Text,
                DienThoai = Int32.Parse(txtDangKyDienThoai.Text),
                Email = txtDangKyEmail.Text,
                DiaChiCaiDat = txtDangKyDiaChiCaiDat.Text,
                DiaChiHoaDon = txtDangKyDiaChiHoaDon.Text,
                SoLuongTaiKhoan = slTaiKhoan,
                TenNguoiSuDung = txtDangKyTenNguoiSuDung.Text,
                TenGoiCuoc = maGoiCuoc,
                TronGoi = phuongThuc,
                TenKieuCaiDat = maKieuCaiDat,
                TenModem = maModem
            };

            dk.updateCustomer(conn, model);
            MessageBox.Show("Cập nhật thành công", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Information);
            customer = dk.loadDangKy(conn, qr.sql);
            dataGridDangKy.ItemsSource = customer;
        }

        private void btnDangKyXoa_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            model = new CustomerViewModel { MaKh = Convert.ToInt32(txtDangKyMaKhachHang.Text) };
            MessageBoxResult result = MessageBox.Show("Bạn có muốn xóa không ?", "Thông báo", MessageBoxButton.YesNo,
                                                                            MessageBoxImage.Question);
            if (result == MessageBoxResult.Yes)
            {
                dk.deleteCustomer(conn, model);
                customer = dk.loadDangKy(conn, qr.sql);
                dataGridDangKy.ItemsSource = customer;
                lblCountKh.Content = "Có " + dataGridDangKy.Items.Count + " khách hàng đăng ký";
                MessageBox.Show("Xóa thành công", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Information);
                refresh();
            }
        }

        private void dataGridDangKy_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (dataGridDangKy.SelectedIndex != -1)
            {
                CustomerViewModel ctm = (CustomerViewModel)dataGridDangKy.SelectedItem;
                txtDangKyHoTen.Text = ctm.HoTen;
                txtDangKyEmail.Text = ctm.Email;
                txtDangKyDienThoai.Text = ctm.DienThoai + "";
                txtDangKyDiaChi.Text = ctm.DiaChi;
                txtDangKyDiaChiCaiDat.Text = ctm.DiaChiCaiDat;
                txtDangKyDiaChiHoaDon.Text = ctm.DiaChiHoaDon;
                txtDangKyCMND.Text = ctm.CMND + "";
                txtDangKyNgheNghiep.Text = ctm.NgheNghiep;
                txtDangKySoLuongTaiKhoan.Text = ctm.SoLuongTaiKhoan + "";
                txtDangKyTenNguoiSuDung.Text = ctm.TenNguoiSuDung;
                cbbDangKyGoiCuoc.Text = ctm.TenGoiCuoc;
                cbbDangKyKieuCaiDat.Text = ctm.TenKieuCaiDat;
                cbbDangKyPhuongThuc.Text = ctm.TronGoi;
                cbbDangKyModem.Text = ctm.TenModem;
                btnDangKyXoa.IsEnabled = true;
                btnDangKyCapNhat.IsEnabled = true;
                txtDangKyMaKhachHang.Text = ctm.MaKh.ToString();
            }
        }

        private void tabQuyDinh_Clicked(object sender, MouseButtonEventArgs e)
        {
            string qr = "select * from thamso";
            MySqlDataReader re = null;
            MySqlCommand cmd = new MySqlCommand(qr, conn.con);
            try
            {
                re = cmd.ExecuteReader();
                while (re.Read())
                {
                    txtQuyDinhNgayThanhToanHDToiDa.Text = re.GetInt16(0) + "";
                    txtQuyDinhNgayToiDaThanhToan.Text = re.GetInt16(1) + "";
                    txtQuyDinhNgayGuiHD.Text = re.GetInt16(2) + "";
                    txtQuyDinhVAT.Text = re.GetInt16(3) + "";
                }
                re.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Có lỗi xảy ra khi truy xuất dữ liệu" + ex.Message, "Lỗi");
            }

        }

        private void btnQuyDinhSua_Click(object sender, RoutedEventArgs e)
        {
            setTextBoxQuyDinhEnable(true);
            btnQuyDinhUpdate.IsEnabled = true;
            btnQuyDinhCancel.IsEnabled = true;
        }

        public void setTextBoxQuyDinhEnable(bool val)
        {
            txtQuyDinhVAT.IsEnabled = val;
            txtQuyDinhNgayToiDaThanhToan.IsEnabled = val;
            txtQuyDinhNgayThanhToanHDToiDa.IsEnabled = val;
            txtQuyDinhNgayGuiHD.IsEnabled = val;
        }

        private void btnQuyDinhCancel_Click(object sender, RoutedEventArgs e)
        {
            string qr = "select * from thamso";
            MySqlDataReader re = null;
            MySqlCommand cmd = new MySqlCommand(qr, conn.con);
            try
            {
                re = cmd.ExecuteReader();
                while (re.Read())
                {
                    txtQuyDinhNgayThanhToanHDToiDa.Text = re.GetInt16(0) + "";
                    txtQuyDinhNgayToiDaThanhToan.Text = re.GetInt16(1) + "";
                    txtQuyDinhNgayGuiHD.Text = re.GetInt16(2) + "";
                    txtQuyDinhVAT.Text = re.GetInt16(3) + "";
                }
                re.Close();
            }
            catch (Exception)
            {
                MessageBox.Show("Có lỗi xảy ra khi truy xuất dữ liệu", "Lỗi");
            }

            setTextBoxQuyDinhEnable(false);
            btnQuyDinhUpdate.IsEnabled = false;
            btnQuyDinhCancel.IsEnabled = false;

        }

        private void btnQuyDinhUpdate_Click(object sender, RoutedEventArgs e)
        {

            if (!isTextBoxValueValid(txtQuyDinhNgayThanhToanHDToiDa))
            {
                MessageBox.Show("Số ngày thanh toán hóa đơn đăng ký không hợp lệ.", "Lỗi");
                return;
            }
            if (!isTextBoxValueValid(txtQuyDinhNgayToiDaThanhToan))
            {

                MessageBox.Show("Số ngày thanh toán không hợp lệ.", "Lỗi");
                return;
            }
            if (!isTextBoxValueValid(txtQuyDinhNgayGuiHD))
            {
                MessageBox.Show("Số ngày gửi hóa đơn không hợp lệ.", "Lỗi");
                return;
            }
            if (!isTextBoxValueValid(txtQuyDinhVAT))
            {
                MessageBox.Show("Giá trị VAT không hợp lệ.", "Lỗi");
                return;
            }

            string sql = "update thamso set songaythanhtoandktoida = " + Int16.Parse(txtQuyDinhNgayThanhToanHDToiDa.Text) +
                " ,songaytoidathanhtoan = " + Int16.Parse(txtQuyDinhNgayToiDaThanhToan.Text) +
                    " ,ngayguihoadon=" + Int16.Parse(txtQuyDinhNgayGuiHD.Text) +
                    " ,VAT = " + Int16.Parse(txtQuyDinhVAT.Text);

            MySqlCommand cmd = new MySqlCommand(sql, conn.con);
            cmd.ExecuteNonQuery();
            MessageBox.Show("Cập nhật thông tin thành công", "Thành công");
            btnQuyDinhUpdate.IsEnabled = false;
            btnQuyDinhCancel.IsEnabled = false;
        }

        private bool isTextBoxValueValid(TextBox txt)
        {
            int a = 0;
            //kiem tra chua ky tu ko hop le
            try
            {
                a = Int32.Parse(txt.Text);
            }
            catch
            {

                return false;
            }
            if (txt.Text.Length > 2 || a < 0)
                return false;
            return true;

        }

        private void DataGrid_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
        {
            if (dataGridKieuCD.SelectedIndex != -1)
            {
                SettingTypeViewModel st = (SettingTypeViewModel)dataGridKieuCD.SelectedItem;
                txtMaKieuCD.Text = st.MaKieuCD + "";
                txtTenKieuCD.Text = st.TenKieuCD;

                btnModemXoa.IsEnabled = true;
                btnModemSua.IsEnabled = true;
            }
        }

        private void tabModem_Clicked(object sender, MouseButtonEventArgs e)
        {

            QuanLy ql = new QuanLy();
            dataGridKieuCD.ItemsSource = ql.loadDSKieuCaiDat(conn);
            dataGridDGKCD.ItemsSource = ql.loadDonGiaAndKieuCaiDat(conn);
            dataGridModem.ItemsSource = ql.loadDSModem(conn);
            btnModemXoa.IsEnabled = false;
            btnModemSua.IsEnabled = false;
        }


        private void BtnBaoCao_Click(object sender, RoutedEventArgs e)
        {
        }
        private void btnModemThem_Click(object sender, RoutedEventArgs e)
        {
            if (btnModemThem.Content.Equals("OK"))// dang o trang thai them.
            {
                if (txtTenKieuCD.Text != "")
                {
                    QuanLy q = new QuanLy();
                    q.insertNewKieuCaiDat(conn, txtTenKieuCD.Text);
                    btnModemThem.Content = "Thêm";
                    dataGridKieuCD.ItemsSource = q.loadDSKieuCaiDat(conn);
                    cbbKieuLapDat.DataContext = new SettingTypeViewModel();
                    MessageBox.Show("Thêm mới thành công", "Thành công");
                }
                else
                {
                    MessageBox.Show("Tên kiểu cài đặt mới không hợp lệ", "Lỗi");
                }
            }
            else
            {
                txtMaKieuCD.Text = "";
                btnModemThem.Content = "OK";
            }
        }

        private void DataPickerNgayDangKy_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
        {
            DateTime date;
            date = (DateTime)DataPickerNgayDangKy.SelectedDate;
            String a = date.ToString("dd/MM/yyyy");
            customer = dk.loadDangKy(conn, qr.sqlDay + a + "'");
            dataGridDangKy.ItemsSource = customer;
            lblCountKh.Content = "Có " + dataGridDangKy.Items.Count + " khách hàng đăng ký";
            Console.WriteLine(a);

        }

        private void DangKy_changed(object sender, SelectionChangedEventArgs e)
        {
        }

        public void refresh()
        {
            txtDangKyMaKhachHang.Text = dk.getIdAutoinCrement(conn, "KhachHang") + "";
            txtDangKyHoTen.Text = "";
            txtDangKyCMND.Text = "";
            txtDangKyDiaChi.Text = "";
            txtDangKyDiaChiCaiDat.Text = "";
            txtDangKyDiaChiHoaDon.Text = "";
            txtDangKyDienThoai.Text = "";
            txtDangKyEmail.Text = "";
            txtDangKyNgheNghiep.Text = "";
            txtDangKySoLuongTaiKhoan.Text = "0";
            txtDangKyTenNguoiSuDung.Text = "";
            cbbDangKyGoiCuoc.Text = "";
            cbbDangKyKieuCaiDat.Text = "";
            cbbDangKyModem.Text = "";
            cbbDangKyPhuongThuc.Text = "";

        }

        private void dataGridKieuCD_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            if (dataGridKieuCD.SelectedIndex == -1)
            {
                btnModemXoa.IsEnabled = false;
                btnModemSua.IsEnabled = false;
            }
        }

        private void btnModemSua_Click(object sender, RoutedEventArgs e)
        {
            if (txtTenKieuCD.Text != "")
            {
                string sql = "update kieucaidat set tenkieucaidat = '" + txtTenKieuCD.Text + "' where makieucaidat = " +
                    Int16.Parse(txtMaKieuCD.Text);
                MySqlCommand cmd = new MySqlCommand(sql, conn.con);
                cmd.ExecuteNonQuery();

                QuanLy q = new QuanLy();
                dataGridKieuCD.ItemsSource = q.loadDSKieuCaiDat(conn);
                cbbKieuLapDat.DataContext = new SettingTypeViewModel();
                MessageBox.Show("Cập nhật thông tin thành công", "Thành công");

            }
        }

        private void btnModemXoa_Click(object sender, RoutedEventArgs e)
        {
            int maK = Int16.Parse(txtMaKieuCD.Text);
            if (maK != -1)
            {
                MessageBoxResult re = MessageBox.Show("Xóa kiểu cài đặt có mã " + maK + " ?", "Xác nhận", MessageBoxButton.OKCancel);
                if (re == MessageBoxResult.OK)
                {
                    string sql = "delete from kieucaidat where makieucaidat =  " + maK;
                    if (!conn.IsOpenning)
                        conn.getConnect();
                    MySqlCommand cmd = new MySqlCommand(sql, conn.con);
                    cmd.ExecuteNonQuery();
                    QuanLy q = new QuanLy();
                    dataGridKieuCD.ItemsSource = q.loadDSKieuCaiDat(conn);
                    cbbKieuLapDat.DataContext = new SettingTypeViewModel();
                    MessageBox.Show("Xóa thành công", "Thành công");
                }

            }
            else
            {
                MessageBox.Show("Chưa chọn kiểu cài đặt cần xóa", "Lỗi");
            }
        }
        private void btnModemCapNhat_Click(object sender, RoutedEventArgs e)
        {
            int maCD = 0;
            int maModem = 0;
            int donGia = 0;
            try
            {
                maCD = ((SettingType)cbbKieuLapDat.SelectedItem).MaKieu;
                maModem = ((Modem)cbbLoaiModem.SelectedItem).MaModem;

                donGia = Int32.Parse(txtMucGia.Text);
            }
            catch
            {
                MessageBox.Show("Thông tin không hợp lệ", "Lỗi");
            }

            QuanLy q = new QuanLy();
            if (q.updateChiTietCaiDat(conn, maCD, maModem, donGia))
            {
                dataGridDGKCD.ItemsSource = q.loadDonGiaAndKieuCaiDat(conn);
                MessageBox.Show("Cập nhật thành công", "Thành công");
            }
            else
            {
                MessageBox.Show("Có lỗi trong quá trình xử lý", "Lỗi");
            }
        }

        private void tabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (tabControl.SelectedIndex < 0)
                return;
            if (tabDangKy.IsSelected)
            {
                if (cbbDangKyGoiCuoc.Items.Count == 0)
                    dk.loadDataToComboBox(conn, cbbDangKyGoiCuoc, qr.sqlGoiCuoc);
                if (cbbDangKyKieuCaiDat.Items.Count == 0)
                    dk.loadDataToComboBox(conn, cbbDangKyKieuCaiDat, qr.sqlKieuCaiDat);
                customer = dk.loadDangKy(conn, qr.sql);
                dataGridDangKy.ItemsSource = customer;
                lblCountKh.Content = "Có " + dataGridDangKy.Items.Count + " khách hàng đăng ký";
                btnRefresh.IsEnabled = true;
            }
            if (tabThanhToanDangKy.IsSelected)
            {
                customer = dk.loadDSKHChuaThanhToan(conn, qr.sqlThanhToan);
                DataGridThanhToanDK.ItemsSource = customer;
                if (cbbTtsd.Items.Count == 0)
                    dk.loadDataToComboBox(conn, cbbTtsd, qr.sqlTinhTrangSuDung);
                cbbTtsd.Text = "Đang Sử Dụng";
                lblKhachHangThanhToanDK.Content = "Có " + DataGridThanhToanDK.Items.Count + " khách hàng chưa thanh toán đăng ký";

            }
            if (tabKhachHang.IsSelected)
            {

                customer = dk.loadDSKH(conn, qr.sqlKh);
                dataGridKhachhang.ItemsSource = customer;
                if (cbbxGoiCuoc.Items.Count == 0)
                    dk.loadDataToComboBox(conn, cbbxGoiCuoc, qr.sqlGoiCuoc);
                if (cbbxModem.Items.Count == 0)
                    dk.loadDataToComboBox(conn, cbbxModem, qr.queryModem);

                if (cbbxTinhTrang.Items.Count == 0)
                {
                    dk.loadDataToComboBox(conn, cbbxTinhTrang, qr.sqlTinhTrangSuDung);
                }
                if (cbbxPhuongThuc.Items.Count == 0)
                {
                    cbbxPhuongThuc.Items.Add("Trọn gói");
                    cbbxPhuongThuc.Items.Add("Phương thức lưu lượng");
                }
                lblKh.Content = "Hiện  tại hệ thống có " + dataGridKhachhang.Items.Count + " khách hàng";

            }
            if (tabBaoBieu.IsSelected)
            {

            }
        }

        private void tabGoiCuoc_Clicked(object sender, MouseButtonEventArgs e)
        {
            QuanLy q = new QuanLy();
            ObservableCollection<GoiCuocViewModel> g = q.loadDSGoiCuoc(conn);
            dataGridGoiCuoc.ItemsSource = g;



        }

        private void DataGridThanhToanDK_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            btnHuyDangKy.IsEnabled = true;
            btnThanhToan.IsEnabled = true;
            if (DataGridThanhToanDK.SelectedIndex != -1)
            {
                CustomerViewModel ctm = (CustomerViewModel)DataGridThanhToanDK.SelectedItem;
                lbMaKhachHang.Content = ctm.MaKh;
                lbHoTen.Content = ctm.HoTen;
                lbCMND.Content = ctm.CMND;
                lbPhiCaiDat.Content = ctm.TongTienThanhToan;
            }
        }

        private void btnThemModem_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            int maCD = 0;
            int maModem = 0;

            int donGia = 0;
            try
            {
                maCD = ((SettingType)cbbKieuLapDat.SelectedItem).MaKieu;
                maModem = ((Modem)cbbLoaiModem.SelectedItem).MaModem;

                donGia = Int32.Parse(txtMucGia.Text);


            }
            catch
            {
                MessageBox.Show("Thông tin không hợp lệ", "Lỗi");
                return;
            }
            QuanLy q = new QuanLy();
            if (q.insertNewChiTietCaiDat(conn, maCD, maModem, donGia))
            {
                dataGridDGKCD.ItemsSource = q.loadDonGiaAndKieuCaiDat(conn);
                MessageBox.Show("Thêm thành công", "Thành công");
            }
            else
            {
                MessageBox.Show("Có lỗi trong quá trình xử lý", "Lỗi");
            }

        }

        private void tabQuanLy_Clicked(object sender, MouseButtonEventArgs e)
        {
            tabGoiCuoc_Clicked(sender, e);

        }


        private void btnTimKiemThanhToanDK_Click(object sender, RoutedEventArgs e)
        {
            String hoten = "";
            if (!txtThanhToanDKHoTen.Text.Equals(""))
                hoten = " and HoTen like '%" + txtThanhToanDKHoTen.Text + "%'";
            String CMND = "";
            if (!txtThanhToanDKCMND.Text.Equals(""))
                CMND = " and CMND like '%" + Int32.Parse(txtThanhToanDKCMND.Text) + "%'";
            String dienThoai = "";
            if (!txtThanhToanDKDienThoai.Text.Equals(""))
                dienThoai = " and DienThoai like '%" + Int32.Parse(txtThanhToanDKDienThoai.Text) + "%'";
            String query = qr.timKiemKh + hoten + CMND + dienThoai;
            customer = dk.loadDSKHChuaThanhToan(conn, query);
            DataGridThanhToanDK.ItemsSource = customer;
        }

        private void btnXoaKhachHangQuaHanThanhToan_Click(object sender, RoutedEventArgs e)
        {

            if (dk.getListMaKhQuahan(conn).Count == 0)
            {
                MessageBox.Show("Không có khách hàng nào quá hạn thanh toán !!!", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Information);
                return;
            }

            dk.deleteCustomerQuaHanThanhToan(conn);
            customer = dk.loadDSKHChuaThanhToan(conn, qr.sqlThanhToan);
            MessageBox.Show("Xóa thành công", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Information);
            DataGridThanhToanDK.ItemsSource = customer;
            lblKhachHangThanhToanDK.Content = "Có " + DataGridThanhToanDK.Items.Count + " khách hàng chưa thanh toán đăng ký";

        }

        private void btnHuyDangKy_Click(object sender, RoutedEventArgs e)
        {
            CustomerViewModel ctm = new CustomerViewModel { MaKh = Int32.Parse(lbMaKhachHang.Content.ToString()) };
            MessageBoxResult result = MessageBox.Show("Bạn có chắc chắn là muốn hủy không ?", "Thông báo", MessageBoxButton.OKCancel, MessageBoxImage.Question);
            if (result == MessageBoxResult.OK)
            {
                dk.deleteCustomerHuyDk(conn, ctm);
                dk.deleteCustomerQuaHanThanhToan(conn);
                customer = dk.loadDSKHChuaThanhToan(conn, qr.sqlThanhToan);
                MessageBox.Show("Xóa thành công", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Information);
                DataGridThanhToanDK.ItemsSource = customer;
            }
            lblKhachHangThanhToanDK.Content = "Có " + DataGridThanhToanDK.Items.Count + " khách hàng chưa thanh toán đăng ký";
        }

        private void btnThanhToan_Click(object sender, RoutedEventArgs e)
        {
            CustomerViewModel ctm = new CustomerViewModel { MaKh = Int32.Parse(lbMaKhachHang.Content.ToString()), TinhTrangSuDung = ((ComboboxItem)cbbTtsd.SelectedItem).Id };
            dk.thanhToanPhiHoaMang(conn, ctm);
            MessageBox.Show("Thanh toán thành công", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Information);
            customer = dk.loadDSKHChuaThanhToan(conn, qr.sqlThanhToan);
            DataGridThanhToanDK.ItemsSource = customer;
            lblKhachHangThanhToanDK.Content = "Có " + DataGridThanhToanDK.Items.Count + " khách hàng chưa thanh toán đăng ký";
        }


        private void dataGridGoiCuoc_ItemClicked(object sender, SelectionChangedEventArgs e)
        {
            if (dataGridGoiCuoc.SelectedIndex != -1)
            {


                GoiCuocViewModel gc = (GoiCuocViewModel)dataGridGoiCuoc.SelectedItem;
                txtMaGoiCuoc.Text = gc.MaGoiCuoc + "";
                txtTenGoi.Text = gc.TenGoiCuoc;
                txtDownMax.Text = gc.DownToiDa + "";
                txtDownMin.Text = gc.DownToiThieu + "";
                txtUpMax.Text = gc.UpToiDa + "";
                txtUpMin.Text = gc.UpToiThieu + "";
                txtIP.Text = gc.IP + "";
                txtTronGoi.Text = gc.GiaTronGoi + "";
                if (gc.MaGoiCuoc == 1)
                {
                    chkPhuongThuc.IsChecked = false;
                }
                else
                {
                    chkPhuongThuc.IsChecked = true;
                }

                if (chkPhuongThuc.IsChecked == true)
                {
                    grBLuuLuong.Visibility = System.Windows.Visibility.Visible;

                }
                else
                {
                    grBLuuLuong.Visibility = System.Windows.Visibility.Hidden;
                }

                cbbMaPT.SelectedIndex = gc.MaPhuongThuc - 1;


                btnGCLamMoi.IsEnabled = true;
                btnGCSua.IsEnabled = true;
                btnGCXoa.IsEnabled = true;
            }
            else
            {
                btnGCSua.IsEnabled = false;
                btnGCXoa.IsEnabled = false;
            }
        }

        private void chkPhuongThuc_Clicked(object sender, RoutedEventArgs e)
        {
            if (chkPhuongThuc.IsChecked == true)
            {
                grBLuuLuong.Visibility = Visibility.Visible;
            }
            else
            {
                grBLuuLuong.Visibility = Visibility.Hidden;
            }
        }

        private void btnGCXoa_Click(object sender, RoutedEventArgs e)
        {
            int ma = Int16.Parse(txtMaGoiCuoc.Text);
            if (ma != -1)
            {
                QuanLy q = new QuanLy();
                if (q.deleteGoiCuoc(ma, conn))
                {
                    dataGridGoiCuoc.ItemsSource = q.loadDSGoiCuoc(conn);
                    MessageBox.Show("Xóa thành công", "Thành công");
                }
                else
                {
                    MessageBox.Show("Có lỗi trong quá trình xử lý.", "Lỗi");
                }
            }

        }

        private void btnGCLamMoi_Click(object sender, RoutedEventArgs e)
        {
            txtMaGoiCuoc.Text = "";
            txtTenGoi.Text = "";
            txtDownMax.Text = "";
            txtDownMin.Text = "";
            txtUpMax.Text = "";
            txtUpMin.Text = "";

            txtIP.Text = "";
            txtTronGoi.Text = "";
            chkPhuongThuc.IsChecked = true;

            txtCuocTD.Text = "";

            cbbMaPT.SelectedIndex = 0;
            txtDenMB.Text = "";
            txtMoiMB.Text = "";

            btnGCSua.IsEnabled = false;
            btnGCXoa.IsEnabled = false;
        }

        private void btnGCSua_Click(object sender, RoutedEventArgs e)
        {
            int ma = Int16.Parse(txtMaGoiCuoc.Text);
            if (ma != -1)
            {
                QuanLy q = new QuanLy();
                if (q.updateGoiCuoc(conn, ma, txtTenGoi.Text, Int32.Parse(txtDownMax.Text), Int32.Parse(txtDownMin.Text),
                    Int32.Parse(txtUpMax.Text), Int32.Parse(txtUpMin.Text), Int32.Parse(txtTronGoi.Text),
                    Int32.Parse((((PhuongThuc)cbbMaPT.SelectedItem).MaPT).ToString()), Int32.Parse(txtIP.Text)))
                {
                    dataGridGoiCuoc.ItemsSource = q.loadDSGoiCuoc(conn);
                    MessageBox.Show("Cập nhật thành công", "Thành công");
                }
                else
                {
                    MessageBox.Show("Có lỗi trong quá trình xử lý.", "Lỗi");
                }
            }
        }

        private void cbbMaPT_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            int ma = cbbMaPT.SelectedIndex;
            if (ma != -1)
            {
                PhuongThuc pt = (PhuongThuc)cbbMaPT.SelectedItem;
                txtDenMB.Text = pt.DonGia + "";
                txtMoiMB.Text = pt.MoiMB + "";
                txtCuocTD.Text = pt.CuocToiDa + "";
                switch (ma + 1)
                {
                    case 1:
                        lbldenMB.Content = "Không cung cấp";
                        txtDenMB.Text = "Không cung cấp";
                        txtMoiMB.Text = "Không cung cấp";
                        txtCuocTD.Text = "Không cung cấp";
                        break;
                    case 2:
                        lbldenMB.Content = "Đến " + pt.DenMB;

                        break;
                    case 3:
                        lbldenMB.Content = "Đến " + pt.DenMB;

                        break;
                    case 4:
                        lbldenMB.Content = "Cước thuê bao: ";

                        break;
                    case 5:
                        lbldenMB.Content = "Cước thuê bao: ";

                        break;
                }
            }
        }

        private void btnGCThem_Click(object sender, RoutedEventArgs e)
        {
            if (btnGCThem.Content.Equals("OK"))
            {
                try
                {

                    string tenGoi = txtTenGoi.Text;
                    int downMax = Int32.Parse(txtDownMax.Text);
                    int downMin = Int32.Parse(txtDownMin.Text);
                    int upMax = Int32.Parse(txtUpMax.Text);
                    int upMin = Int32.Parse(txtUpMin.Text);

                    int ip = Int32.Parse(txtIP.Text);
                    int tronGoi = Int32.Parse(txtTronGoi.Text);

                    int loaiPt = (chkPhuongThuc.IsChecked == true) ? ((PhuongThuc)cbbMaPT.SelectedItem).MaPT : 1;
                    QuanLy q = new QuanLy();
                    if (q.insertGoiCuoc(conn, tenGoi, downMax, downMin, upMax, upMin, tronGoi, ip, loaiPt))
                    {
                        dataGridGoiCuoc.ItemsSource = q.loadDSGoiCuoc(conn);
                        MessageBox.Show("Thêm mới thành công", "Thành công");
                    }
                    else
                    {
                        MessageBox.Show("Có lỗi trong quá trình xử lý dữ liệu", "Thành công");
                    }
                }
                catch
                {
                    MessageBox.Show("Thông tin gói cước không hợp lệ", "Lỗi");
                    return;
                }
                btnGCThem.Content = "Thêm";
            }
            else
            {
                btnGCThem.Content = "OK";
                btnGCLamMoi_Click(sender, e);
            }
        }

        private void cbbTtsd_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            return;
        }
        private void dataGridModem_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            if (dataGridModem.SelectedIndex == -1)
            {
                btnGrModemXoa.IsEnabled = false;
                btnGrModemSua.IsEnabled = false;
            }
        }

        private void DataGridModem_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (dataGridModem.SelectedIndex != -1)
            {
                Modem st = (Modem)dataGridModem.SelectedItem;
                txtMaModem.Text = st.MaModem + "";
                txtTenLoaiModem.Text = st.TenModem;

                btnGrModemXoa.IsEnabled = true;
                btnGrModemSua.IsEnabled = true;
            }
        }

        private void btnGrModemThem_Click(object sender, RoutedEventArgs e)
        {
            if (btnGrModemThem.Content.Equals("OK"))
            {
                if (txtTenLoaiModem.Text.Equals(""))
                {
                    MessageBox.Show("Tên Modem mới không hợp lệ", "Lỗi");
                    return;
                }

                QuanLy q = new QuanLy();
                if (q.insertNewModem(conn, txtTenLoaiModem.Text))
                {
                    dataGridModem.ItemsSource = q.loadDSModem(conn);
                    cbbLoaiModem.DataContext = new ModemViewModel();
                    MessageBox.Show("Thêm Modem mới thành công", "Thành công");
                }
                else
                {
                    MessageBox.Show("Có lỗi trong quá trình xử lý", "Lỗi");
                }
                btnGrModemThem.Content = "Thêm";
            }
            else
            {
                btnGrModemThem.Content = "OK";
                txtMaModem.Text = "";
                txtTenLoaiModem.Text = "";
                btnGrModemSua.IsEnabled = false;
                btnGrModemXoa.IsEnabled = false;
            }
        }

        private void btnGrModemSua_Click(object sender, RoutedEventArgs e)
        {
            int ma = Int32.Parse(txtMaModem.Text);
            if (dataGridModem.SelectedIndex != -1)
            {
                QuanLy q = new QuanLy();
                if (q.updateModem(conn, ma, txtTenLoaiModem.Text))
                {
                    dataGridModem.ItemsSource = q.loadDSModem(conn);
                    cbbLoaiModem.DataContext = new ModemViewModel();
                    MessageBox.Show("Cập nhật thông tin thành công", "Thành công");
                }
                else
                {
                    MessageBox.Show("Có lỗi trong quá trình xử lý", "Lỗi");
                }
            }
            else
            {
                MessageBox.Show("Chưa chọn modem!", "Lỗi");
            }
        }

        private void btnGrModemXoa_Click(object sender, RoutedEventArgs e)
        {
            int ma = Int32.Parse(txtMaModem.Text);
            if (dataGridModem.SelectedIndex != -1)
            {
                QuanLy q = new QuanLy();
                if (q.DeleteModem(conn, ma))
                {
                    dataGridModem.ItemsSource = q.loadDSModem(conn);
                    cbbLoaiModem.DataContext = new ModemViewModel();
                    MessageBox.Show("Xóa modem thành công", "Thành công");
                }
                else
                {
                    MessageBox.Show("Có lỗi trong quá trình xử lý", "Lỗi");
                }
            }
            else
            {
                MessageBox.Show("Chưa chọn modem!", "Lỗi");
            }
        }

        private void dataGridDGKCD_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (dataGridDGKCD.SelectedIndex != -1)
            {
                SettingTypeViewModel stv = (SettingTypeViewModel)dataGridDGKCD.SelectedItem;
                //cbbKieuLapDat.SelectedItem = new SettingType { MaKieu = stv.MaKieuCD, TenKieu = stv.TenKieuCD};
                cbbKieuLapDat.SelectedIndex = util.GetIndexByValueInSettingTypeComboBox(cbbKieuLapDat, stv.TenKieuCD);
                cbbLoaiModem.SelectedIndex = util.GetIndexByValueInModemComboBox(cbbLoaiModem, stv.TenModem);
                txtMucGia.Text = stv.DonGia + "";

            }
        }


        private void dataGridKhachhang_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (dataGridKhachhang.SelectedIndex < 0)
                return;
            model = ((CustomerViewModel)dataGridKhachhang.SelectedItem);
            if (model != null)
            {
                lblHoTen.Content = model.HoTen;
                lblCMND.Content = model.CMND;
                lblDienThoai.Content = model.DiaChi;
                lblDiaChi.Content = model.DiaChi;
                lblSoHopDong.Content = model.MaHopDong;
            }
            // btnBaoLoiKyThuat.IsEnabled = true;
            btnThongTinChiTiet.IsEnabled = true;
        }

        private void tabKyThuat_Clicked(object sender, MouseButtonEventArgs e)
        {
            KyThuat k = new KyThuat();
            dataGridSuCo.ItemsSource = k.loadDSKHBaoLoi(conn);


        }

        private void ckBaoLoi_Checked(object sender, RoutedEventArgs e)
        {
            if (ckBaoLoi.IsChecked == true)
            {
                txtBaoLoiKyThuat.IsEnabled = true;
                btnBaoLoiKyThuat.IsEnabled = true;
            }
        }

        private void ckBaoLoi_Unchecked(object sender, RoutedEventArgs e)
        {
            txtBaoLoiKyThuat.IsEnabled = false;
            btnBaoLoiKyThuat.IsEnabled = false;
        }

        private void btnBaoLoiKyThuat_Click(object sender, RoutedEventArgs e)
        {
            dk.insertThongTinLoi(conn, Int32.Parse(lblSoHopDong.Content.ToString().Trim()), txtBaoLoiKyThuat.Text);
            MessageBox.Show("Báo lỗi thành công !!! ", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Information);
            customer = dk.loadDSKH(conn, qr.sqlKh);
            dataGridKhachhang.ItemsSource = customer;
            txtBaoLoiKyThuat.Text = "";
            lblKh.Content = "Hiện  tại hệ thống có " + dataGridKhachhang.Items.Count + " khách hàng";
        }

        bool isChangedCbbxGoicuoc = false;
        bool isChangedCbbxPhuongThuc = false;
        bool isChangedCbbxModem = false;
        bool isChangedCbbxTinhTrang = false;

        private void btnTimKiem_Click(object sender, RoutedEventArgs e)
        {

            String MaHd = "";
            if (!txtMaHd.Text.Equals(""))
                MaHd = " and mahopdong like '%" + Int32.Parse(txtMaHd.Text) + "%' ";
            else
                MaHd = "";
            String hoTen = "";
            if (!txtTenKh.Text.Equals(""))
                hoTen = " and Hoten like '%" + txtTenKh.Text + "%' ";
            else
                hoTen = "";
            String cmnd = "";
            if (!txt_cmnd.Text.Equals(""))
                cmnd = " and CMND like'%" + txt_cmnd.Text + "%'";
            else
                cmnd = "";


            String maGoicuoc = "";
            if (isChangedCbbxGoicuoc)
            {
                if (cbbxGoiCuoc.SelectedItem.ToString().Equals(""))
                    maGoicuoc = "";
                else
                    maGoicuoc = "and GOICUOC.MaGoiCuoc like '%" + ((ComboboxItem)cbbxGoiCuoc.SelectedItem).Id + "%'";
            }
            String maModem = "";
            if (isChangedCbbxModem)
            {
                if (cbbxModem.SelectedItem.ToString().Equals(""))
                    maModem = "";
                else
                    maModem = " and Modem.MaModem like '%" + ((ComboboxItem)cbbxModem.SelectedItem).Id + "%'";
            }
            String pThuc = "";
            if (isChangedCbbxPhuongThuc)
            {
                if (cbbxPhuongThuc.SelectedItem.ToString().Equals("Trọn gói"))
                    pThuc = " and DangKy.TronGoi like '%1%'";
                else
                    pThuc = " and DangKy.TronGoi like '%0%'";

            }
            String maTinhTrang = "";
            if (isChangedCbbxTinhTrang)
            {
                maTinhTrang = " and TinhTrangSuDung.matinhtrangsudung like '%" + ((ComboboxItem)cbbxTinhTrang.SelectedItem).Id + "%'";
            }
            String query = qr.sqlKh + MaHd + hoTen + cmnd + maGoicuoc + maModem + pThuc + maTinhTrang;
            customer = dk.loadDSKH(conn, query);
            dataGridKhachhang.ItemsSource = customer;
        }

        private void cbbxTinhTrang_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            isChangedCbbxTinhTrang = true;
        }

        private void cbbxModem_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            isChangedCbbxModem = true;
        }

        private void cbbxGoiCuoc_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            isChangedCbbxGoicuoc = true;
        }

        private void cbbxPhuongThuc_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            isChangedCbbxPhuongThuc = true;
        }


        private void dataGridSuCo_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (dataGridSuCo.SelectedIndex != -1)
            {
                CustomerViewModel cu = (CustomerViewModel)dataGridSuCo.SelectedItem;
                txtSuCoMaKH.Text = cu.MaKh + "";
                txtSuCoHoTen.Text = cu.HoTen;
                txtSuCoCMND.Text = cu.CMND + "";
                txtCachKhacPhuc.Text = cu.CachKhacPhuc + "";

                if (cu.NgaySuaLoiString.Equals("Chưa khắc phục"))
                {
                    btnSuCoXacNhan.IsEnabled = true;
                }
                else
                {
                    btnSuCoXacNhan.IsEnabled = false;
                }
            }
        }

        private void btnSuCoXacNhan_Click(object sender, RoutedEventArgs e)
        {
            KyThuat k = new KyThuat();
            int ma = ((CustomerViewModel)dataGridSuCo.SelectedItem).MaBaoLoi;
            if (k.updateKhacPhucSuCo(conn, ma, txtCachKhacPhuc.Text))
            {
                dataGridSuCo.ItemsSource = k.loadDSKHBaoLoi(conn);
                MessageBox.Show("Xác nhận thành công", "Thành công");
            }
            else
            {
                MessageBox.Show("Có lỗi trong quá trình xử lý", "Lỗi");
            }

        }


        private void tabBBKhachHangMoi_Clicked(object sender, MouseButtonEventArgs e)
        {
            BaoBieu b = new BaoBieu();
            dataGridBaoBieuKHMoi.ItemsSource = b.loadDSKHMoi(conn);
        }

        private void dataGridBaoBieuKHMoi_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            
        }

        private void btnBBDoanhThuBaoCao_Click(object sender, RoutedEventArgs e)
        {
            int m = 0, y = 0;
            if (cbbBBDoanhThuYear.SelectedIndex != -1 && cbbBBDoanhThuMonth.SelectedIndex != -1)
            {
                m = Int32.Parse(((ComboboxItem)cbbBBDoanhThuMonth.SelectedItem).Name);
                y = Int32.Parse(((ComboboxItem)cbbBBDoanhThuYear.SelectedItem).Name);
            }
            else
            {
                MessageBox.Show("Thông tin không hợp lệ", "Lỗi");
                return;
            }

            BaoBieu bb = new BaoBieu();
            ObservableCollection<DoanhThu> li = bb.loadDoanhThu(conn, m, y);
            dataGridBBDoanhThu.ItemsSource = li;

            long tt = 0;
            for (int i = 0; i < li.Count; i++)
            {
                tt += li[i].TongTien;
            }

            lblBBDTTongTien.Content = tt + " VND";
            btnBBDTIn.IsEnabled = true;
        }

        private void btnBBKHMInBaoCao_Click(object sender, RoutedEventArgs e)
        {
            QLInternet.Model.util.ExportToExcel<CustomerViewModel, List<CustomerViewModel>> s =
                new QLInternet.Model.util.ExportToExcel<CustomerViewModel, List<CustomerViewModel>>();

            ObservableCollection<CustomerViewModel> li = (ObservableCollection<CustomerViewModel>)dataGridBaoBieuKHMoi.ItemsSource;
            if (li.Count <= 0)
            {
                MessageBox.Show("Danh sách rỗng", "Lỗi");
                return;
            }
            object[,] list = new object[li.Count, 7];
            for (int i = 0; i < li.Count; i++)
            {

                list[i, 0] = li[i].STT;
                list[i, 1] = li[i].HoTen;
                list[i, 2] = li[i].CMND;
                list[i, 3] = li[i].DiaChi;
                list[i, 4] = li[i].TenGoiCuoc;
                list[i, 5] = li[i].LoaiPhuongThucDangKy;
                list[i, 6] = li[i].NgayDangKy;

            }

            object[] h = new object[7];

            h[0] = "STT";
            h[1] = "Họ tên";
            h[2] = "CMND";
            h[3] = "Địa chỉ";
            h[4] = "Gói cước";
            h[5] = "Phương thức";
            h[6] = "Ngày đăng ký";

            s.dataToPrint = list;
            s.NumberOfRows = li.Count;
            s.header = h;
            s.GenerateReport();
        }

        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            QLInternet.Model.util.ExportToExcel<DoanhThu, List<DoanhThu>> s = new
                QLInternet.Model.util.ExportToExcel<DoanhThu, List<DoanhThu>>();

            ObservableCollection<DoanhThu> li = (ObservableCollection<DoanhThu>)dataGridBBDoanhThu.ItemsSource;
            if (li.Count <= 0)
            {
                MessageBox.Show("Danh sách rỗng", "Lỗi");
                return;
            }
            object[,] list = new object[li.Count, 5];
            for (int i = 0; i < li.Count; i++)
            {

                list[i, 0] = li[i].STT;
                list[i, 1] = li[i].TenGoiCuoc;
                list[i, 2] = li[i].LoaiPhuongThuc;
                list[i, 3] = li[i].SoKhachHangSuDung;
                list[i, 4] = li[i].TongTien;

            }

            object[] h = new object[5];

            h[0] = "STT";
            h[1] = "Tên gói cước";
            h[2] = "Loại phương thức";
            h[3] = "Số khách hàng sử dụng";
            h[4] = "Tổng tiền";

            s.dataToPrint = list;
            s.NumberOfRows = li.Count;
            s.header = h;
            s.GenerateReport();
        }

        private void btnBBKHTreTT_Click(object sender, RoutedEventArgs e)
        {
            QLInternet.Model.util.ExportToExcel<CustomerViewModel, List<CustomerViewModel>> s = new
                QLInternet.Model.util.ExportToExcel<CustomerViewModel, List<CustomerViewModel>>();

            ObservableCollection<CustomerViewModel> li = (ObservableCollection<CustomerViewModel>)dataGridBaoBieuKHTTT.ItemsSource;
            if (li.Count <= 0)
            {
                MessageBox.Show("Danh sách rỗng", "Lỗi");
                return;
            }
            object[,] list = new object[li.Count, 6];
            for (int i = 0; i < li.Count; i++)
            {

                list[i, 0] = li[i].STT;
                list[i, 1] = li[i].HoTen;
                list[i, 2] = li[i].CMND;
                list[i, 3] = li[i].DiaChi;
                list[i, 4] = li[i].DienThoai;
                list[i, 5] = li[i].TongTienThanhToan;

            }

            object[] h = new object[6];

            h[0] = "STT";
            h[1] = "Họ tên";
            h[2] = "CMND";
            h[3] = "Địa chỉ";
            h[4] = "Điện thoại";
            h[5] = "Tổng tiền";
            s.dataToPrint = list;
            s.NumberOfRows = li.Count;
            s.header = h;
            s.GenerateReport();
        }

        private void Window_GotFocus(object sender, RoutedEventArgs e)
        {
            if (new FmKhachHang().isClosed)
            {
                customer = dk.loadDSKH(conn, qr.sqlKh);
                dataGridKhachhang.ItemsSource = customer;
            }




        }

        private void btnLogOut_Click(object sender, RoutedEventArgs e)
        {
            this.Hide();
            new FmLogin().ShowDialog();
            Application.Current.Shutdown();
        }

        private void btnDoiMatKhau_Click(object sender, RoutedEventArgs e)
        {

            doiMatKhau();
        }

        public void doiMatKhau()
        {
            String queryPassWord = qr.sqlPassWord + txtUsers.Text + "' and Matkhau like '" + txtOldPassWord.Password + "'";
            if (txtOldPassWord.Password.Equals("") || txtNewPassWord.Password.Equals("") || txtReNewPassWord.Password.Equals(""))
            {
                MessageBox.Show("Vui lòng nhập đầy đủ thông tin !!!", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            if (!dk.isExist(conn, queryPassWord))
            {
                MessageBox.Show("Mật khẩu cũ không hợp lệ !!!", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                txtOldPassWord.Password = "";
                txtOldPassWord.Focus();
                return;
            }
            if (txtNewPassWord.Password.Length < 4 || txtNewPassWord.Password.Length > 32 || txtReNewPassWord.Password.Length < 4 || txtReNewPassWord.Password.Length > 32)
            {
                MessageBox.Show("Mật khẩu phải có ít nhất 4 kí tự và không được vượt quá 32 ký tự !!!", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                txtNewPassWord.Password = "";
                txtNewPassWord.Focus();
                return;
            }

            if (!txtNewPassWord.Password.Equals(txtReNewPassWord.Password))
            {
                MessageBox.Show("Mật khẩu không trùng nhau!!!", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                txtNewPassWord.Password = "";
                txtReNewPassWord.Password = "";
                txtNewPassWord.Focus();
                return;
            }

            String query = qr.sqlDoiMatKhau + txtNewPassWord.Password + "' where taikhoan like '" + txtUsers.Text + "'";
            dk.updateRowInDataTable(conn, query);
            MessageBox.Show("Đổi mật khẩu thành công !!!", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Information);
            txtOldPassWord.Password = "";
            txtNewPassWord.Password = "";
            txtReNewPassWord.Password = "";
            txtOldPassWord.Focus();
        }

        private void txtOldPassWord_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
                doiMatKhau();
        }

        private void txtNewPassWord_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
                doiMatKhau();
        }

        private void txtReNewPassWord_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
                doiMatKhau();
        }

        private void btnRefresh_Click(object sender, RoutedEventArgs e)
        {
            refresh();
        }
       

    }
}